home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / basic / mildred / index.html.txt < prev    next >
Text File  |  2000-03-11  |  21KB  |  389 lines

  1. HTTX 1.5
  2.  
  3.  
  4.  
  5.                                Welcome to the
  6.                         programmer support pages for
  7.  
  8.      A chunky-graphics library for the Blitz Basic programming language
  9.  
  10.                      Written by Paul West in 1998-2000.
  11.                  Copyright (c) 1998-2000 Paul Jonathan West
  12.  
  13.                     Last updated Thursday 3rd March 2000
  14.  
  15. Intro: Mildred is a 8-bit-chunky graphics library for the programming
  16. language called BlitzBasic2 on the Amiga computer. It is written entirely in
  17. assembly language and offers a large variety of graphics-related capabilities
  18. which are accessible from your own BlitzBasic2 programs via tokens. Mildred
  19. offers handling of chunky bitmaps and shapes and has its own queue system to
  20. help with many engine's into which it may be applied. It also has a selection
  21. of particle animation and rendering routines, zooms, and a fast
  22. chunky-to-planar conversion system. There are various blitting modes to
  23. choose from, individually selectable for a range of scroll, blockscroll and
  24. blit routines, allowing graphics handling in colour, as well as
  25. transparencies and other effects. There are various housekeeping routines to
  26. handle the objects and also a range of drawing routines for points, lines and
  27. boxes, also in various blit modes. Plus there are a selection of fast tile
  28. routines for map-type engines. The design of the interface between the
  29. programmer and the library is based on the existing design of the original
  30. BlitzBasic2 graphics tokens, which makes for an easier integration and
  31. changeover. Perhaps most importantly of all, the output from Mildred is
  32. easily retargetabble between the standard AGA display hardware and a graphics
  33. card (which supports 8-bit modes).
  34.  
  35. Disclaimer: I make no promises as to the reliability or suitability of
  36. Mildred or any of the example programs, accuracy of documentation or absense
  37. of bugs. I cannot be held liable for any damage that may come about to
  38. yourself, others, nor meterial or intellectual property as a result of
  39. exposure to and use of the library and its supporting information. Use of
  40. Mildred is entirely at your own risk and the author will not be held
  41. accountable for any confusions, mishaps, mistakes, losses or damages. I can
  42. also make no promises about the speed or performance of any of the routines
  43. available and you should be aware that working with chunky-format graphics
  44. requires a certain amount of cpu power to be productive (e.g. 68030/50MHz or
  45. higher). Yet I, Paul Jonathan West, would like to offer at least the warm
  46. encouragement that Mildred has undergone extensive testing both via exposure
  47. to the public and as a result of my own checking and perfecting. So far no
  48. bugs have been reported since the release of Mildred v1.50 in May 1999.
  49. Please note also that the example/demo programs available below are there to
  50. help you get used to coding using Mildred and will work on most Amiga's, but
  51. in some cases there are problems. This is not necessarily representative of
  52. the reliability of the library itself, but of poorly coded examples (on my
  53. part mostly). I apologise for this and hope that nevertheless you will have
  54. few problems becoming accustomed to using Mildred to open new avenues in your
  55. programming.
  56.  
  57.  
  58. Notice: Mildred is designed, written and created by Paul West. Main
  59. development occurred from October 1998 till May 1999 mostly full-time. The
  60. sourcecode, its copyright and freedom to make alterations, modifications and
  61. additions has been reclaimed from Pagan Games, as well as full rights of
  62. distribution as I see fit. This has no effect on public use of the compiled
  63. library in any of your projects, such as can be downloaded in the archives
  64. below. There is no further work planned by the author at this time, but
  65. further work is now a possibility. All of the files and information available
  66. below for download are free for public use and the author will willingly
  67. accept payments for use of Mildred in your products if you are feeling
  68. generous! Please enjoy this great library and good luck with your projects.
  69.  
  70. Mildred Stats: 863,325 bytes of assembler code spanning 27,176 lines, 219
  71. individual tokens with the functionality of 407 via syntax variations,
  72. sourcecode commented on 12,440 lines, full runtime errorchecking routines
  73. throughout, 51 version updates comprising bugfixes, additional code and
  74. optimisations since the first public release, full AmigaGuide and Html
  75. documentation covering every token and variation of syntax, 4 months full
  76. time and 3 months part time work, compiles to 138,104 bytes in 115 seconds on
  77. my 68040/25.
  78.  
  79. Click HERE for library history, or HERE for a list of commands.
  80.  
  81.  
  82.  
  83. (65k) Mildred.lha : This is the actual Mildred library, version 1.51.
  84.  
  85. (47k) MildredGuide.lha : This is an archive containing full documentation
  86. covering ALL commands in Mildred for version 1.51, in AmigaGuide format.
  87. Alternatively you can click HERE to view the text on-line.
  88.  
  89. (124k) MildredHtml.lha : Html version of the MildredGuide.lha amigaguide
  90. v1.51 documentation. Alternatively, you can click HERE to read the Html
  91. documentation online.
  92.  
  93. (2k) Internal.lha : This is a copy of the internal data area of Mildred
  94. v1.47. This may be needed if you are writing your own libraries and wish to
  95. tap in to Mildred's data area (which can also be achieved using
  96. MMildredBase). Alternatively you can click HERE to view it online.
  97.  
  98. (16k) MiniMildred.lha : This is the abridged MiniMildred library, version
  99. 1.19, the chunky-to-planar subsystem of the main Mildred system. (Bugfixed)
  100.  
  101. (36k) OldHtml.lha : This is an archive containing the OLD on-line html
  102. documenation for Mildred that covered all of the chunky-to-planar-related
  103. commands. There are no pictures included.
  104.  
  105.  
  106. Notice: You can now download the sourcecode to Mildred. It is free of charges
  107. and obligations. I, Paul Jonathan West, retain copyright ownership of the
  108. library as it stands and is presented at this website, but you may freely
  109. alter, distribute, modify, enhance, optimise, reform and use the source in
  110. any way you see fit in any of your projects, experiments and products. I do
  111. not expect a fee for this privelege but would welcome any small donations and
  112. can be contacted by email.
  113.  
  114. (105k) MildredSourceAsc.lha : Full sourcecode to the Mildred library v1.51,
  115. saved in ASCII format, or click HERE to read the source online.
  116.  
  117. (105k) MildredSourceBB2.lha : Full sourcecode to the Mildred library v1.51,
  118. saved in BlitzBasic2 format.
  119.  
  120. (6k) MildredTests.lha : A few small test programs that I used at times to
  121. check if various tokens were working as they should.
  122.  
  123. (10k) MiniMildredSourceAsc.lha : Full sourcecode to the MiniMildred library,
  124. saved in ASCII format.
  125.  
  126. (10k) MiniMildredSourceBB2.lha : Full sourcecode to the MiniMildred library,
  127. saved in BlitzBasic2 format.
  128.  
  129.  
  130.  
  131. Notice: To follow are various archives of demo programs and related material
  132. that may help you in your exploration of using Mildred in your own software.
  133. Not all of it works at it should for everyone all the time but I hope it will
  134. offer you some useful introduction to various aspects of programming with
  135. Mildred.
  136.  
  137. (165k) DissolveDemo.lha : This is a demonstration of how to use
  138. MPictureDissolveIn. Two example effects are included but the possible effects
  139. are limited only by your imagination. Updated to work with v1.44.
  140.  
  141. (19k) ILBMviewer.lha : This is a demonstration mainly of the c2p system and
  142. its interlacing features. It allows you to load in an ILBM picture and to
  143. display it in the form of a superbitmap. This also includes some old code for
  144. an ILBM-to-Chunky loader, and a screenmode-requester routine with a callback
  145. hook. Updated to work with v1.45.
  146.  
  147. (3k) MildredStructs.txt : Here are the structures for Mildred's objects. This
  148. is not an archive.
  149.  
  150. (9k) BounceDemo.lha : This is a demo for bouncing objects around the screen.
  151. It uses MQSBlit to put objects behind the bitmap's stencil and into the queue
  152. and also performs an unqueue from a store-bitmap. Updated to work with v1.43.
  153.  
  154.  
  155. (15k) FDsExample1.lha : This is an example program demonstrating the use of
  156. Mildred to produce a cool sinewave effect on a logo, written by Mikkel Lokke.
  157.  
  158.  
  159. (15k) MScreen.lha : An example of how to open a screen that can be
  160. retargetted to graphics-card or to AGA, in a way that works easily with
  161. Mildred and allows the use of MBlockScroll for fast graphics-card output in
  162. 8-bit chunky. Updated for v1.45.
  163.  
  164. (3k) FDsExample2.lha : Another example by Mikkel Lokke, demonstrating how to
  165. safely cludge a shape onto previously created shape data.
  166.  
  167. (23k) CardTest.lha : This is a couple of programs (Comparison and
  168. ILBMviewer2) that I was fiddling with when experimenting with graphics-card
  169. output. Comparison does a speed-test between using WritePixelArray8 and
  170. MBlockScroll for output, and ILBMviewer2 is a reworking of the old ILBMviewer
  171. program but with different graphics-card output (using MBlockScroll). The
  172. comparison program is also a combination of ILBMviewer and the Bounce demo.
  173. Updated to work with v1.45.
  174.  
  175. (258k) Remap.lha : This is a demonstration of the MReMapUsingShape command in
  176. combination with a remapping table. Three precalculated tables are included
  177. for 50% merge, add, and subtract or alternatively you can compute your own
  178. (see sourcecode). Note that a generated table only works for the palette it
  179. was computed with. This demo also has Mildred-based AGA and GFX-card support.
  180. You will need Mildred v1.42 for this demo to work free of bugs, although it
  181. will work with earlier versions. Now updated for v1.43 and using MQblit with
  182. MReMapMode instead of MReMapUsingShape (which has been deleted from the
  183. library). Updated for v1.45.
  184.  
  185. (5k) GFXlib.lha : This is an updated version of the
  186. blitzlibs:amigalibs/graphics.library files for o/s 3.1, which provides the
  187. new function WriteChunkyPixels_() which can be useful for graphics-card
  188. output. Note that the more recent Mildred demo's are written using this
  189. library so if you get tokenisation problems there (ie the wrong tokens come
  190. up) then you might like to try this update (or try loading in the ascii
  191. sourcecode), although it will only be fully accessible if you have o/s 3.1.
  192.  
  193. (155k) Bounce9.lha : This is a quick new demo of the `remap mode' blits that
  194. were introduced in Mildred v1.27. Two tables have been precalculated showing
  195. 50% and 20% merge. The sourcecode contains the necessary routines to generate
  196. further different tables (it takes a while!) Now updated for v1.45.
  197.  
  198. (73k) FDsExample3.lha : Welcome to a superbitmap scroll demo by, another fine
  199. effort by Flame Duck himself, Mikkel Lokke. This demonstrates how you can
  200. scroll around a superbitmap. Updated for v1.43.
  201.  
  202. (3k) FDsExample4.lha : A nice little exploding firework effect using Mildred,
  203. by Mikkel Lokke. Updated for v1.43.
  204.  
  205. (213k) ScrollDemo.lha : This is a demonstration of various types of `scroll'
  206. commands in Mildred. The featured effect from top-left are scroll,
  207. blockscroll, motionblur using 50% merge, blacksmoke using subtract, stencil
  208. in colour, scroll from same bitmap, 50% transparency, scroll behind stencil
  209. including x and y flips, scroll from same bitmap and y-flipped copy of the
  210. 50% merge. See the effects for yourself. The two necessary remap tables are
  211. included, along with the iff pic that is needed (the tables are calculated
  212. based on its palette). Updated for v1.45.
  213.  
  214. (3k) PixelExplosion.lha : This is a modification of Mikkel's pixel explosion
  215. program (FDsExample4.lha) with much improved speed and performance. There are
  216. 15000 pixels exploding! The enhancement has been done by Sami Naatanen, with
  217. thanks to Flame Duck for the original program. Updated for v1.43.
  218.  
  219. (47k) MScreen2.lha : This is an better example of how to do RTG in your
  220. Mildred programs. You will need o/s v3.1 graphics.library (see above) in
  221. order to load the source properly, but ascii is included (as is exe). You
  222. will need to put cybergfx.res into blitzlibs: (included). The demo will make
  223. use of cybergraphics library if you have it (or picasso96), and offers a
  224. selection of output methods (selectable with variables). A simple bouncing
  225. line routine is done to show that the output works. The demo defaults to
  226. custom Mildred output and triple buffering. See below for the
  227. cybergraphics.library1 file if you haven't already installed one yourself.
  228. Updated for v1.45.
  229.  
  230. (3k) PixelExplosion2.lha : This is a further modification by myself to the
  231. pixel explosion routine that Mikkel originally wrote, which was later
  232. modified by Sami. I have converted the program to use the new particle
  233. animation routines, and is now at least twice as fast, or many times faster
  234. on lower cpu's. Now updated for v1.43.
  235.  
  236. (10k) GravityExample.lha : A fun little demo of a Gravity-Force style game
  237. written by Sami Nataanen. This shows some simple use of some particle
  238. animation routines and output from a superbitmap, as well as a nifty little
  239. gravity effect, thrust, and bullets. Updated for v1.43.
  240.  
  241. (2k) CyberGFX.lha : This is the cybergraphics.library1 library file which you
  242. can/should put into your blitzlibs:amigalibs/ directory (and remake your
  243. deflibs) to provide the standard set of tokens for the cybergraphics library.
  244. Also included is a .res file which you should put into blitzlibs:, converted
  245. by Daniel Allsopp.
  246.  
  247. (73k) DispDemo.lha : A superbitmap scroll demo by Andreas Hkansson, similar
  248. to FDExample3, but showing you how to simply implement a split-screen display
  249. such as for a two-player game. Updated for v1.43.
  250.  
  251. (7k) HStarDemo.lha : Here is a nice little horizontal starfield with a bendy
  252. logo effect, written mostly by Bruce Henderson.
  253.  
  254. (7k) Starfield2.lha : This is a modification of HStarDemo.lha demonstrating
  255. how to use MScroll with a custom-offsets list so that the bendy logo effect
  256. can be achieved with only one call to MScroll rather than seperate calls for
  257. each line. The sinewave had to be put into a lookup table for this purpose,
  258. so overall the effect is faster (without the WaitTOF).
  259.  
  260. (20k) SineExample.lha : Here are two demos of using a custom-offsets list to
  261. produce the sinewave logo effect as originally written by Mikkel Lokke.
  262. Rather than blit each line seperately the lookup table is used to offset each
  263. line as the scroll progresses. The overall result is a much smoother effect.
  264. Also a second demo is included which attemps to do a quick verticle sinewave
  265. simultaneously (although using a seperate call for each column) so produce a
  266. liquid sort of effect.
  267.  
  268. (84k) ZoomDemo.lha : Here are two demos featuring examples of the new zoom
  269. routines as introduced in Midred v1.47. The first is a simple zoom of an
  270. image and the second shows how to use a custom-offsets list to modify the
  271. zoom effect on each line (with which much fun can be had!). Updated for
  272. v1.48.
  273.  
  274. (84k) DeResDemo.lha : Here are two demos featuring examples of the new de-res
  275. effect that has been added to the zoom routines in Mildred v1.48. The first
  276. is a simple de-res of an image and the second shows how to use the
  277. custom-offsets list to modify the de-res effect on each line.
  278.  
  279. (34k) CNKI.lha : Here is a proposed file format for storing chunky shapes
  280. (which could also be applied to chunky bitmaps), designed by Chris Deeney. It
  281. is able to store single shapes or `anim shapes', and a converter program is
  282. included to convert IFF brush and IFF animbrush files into CNKI files. Also
  283. supplied are some blitz routines to handle the CNKI files including LoadCNK{}
  284. for loading in the CNKI files to your program. The CNKI files can also have
  285. some compression.
  286.  
  287. (417k) SplitTests.lha : Four examples of doing splitscreens using Mildred.
  288. These examples are released `as is' and haven't really been coded for an
  289. audience, but you may find them an interesting example of various kinds of
  290. split-screens possible using Mildred. The examples use a superbitmap source
  291. with multiple views on it, including 4-way split, diagonal split and a single
  292. view with zoom (use mouse buttons). These programs were simple experiments in
  293. splitscreen methods and how many objects could be rendered/handled at the
  294. same time.
  295.  
  296. (309k) SlideShow.lha : This is part of a programmed slideshow-type demo which
  297. I began work on. It shows an example of using MZoom as well as two examples
  298. of picture dissolving. Again this sourcecode wasn't intended to have an
  299. audience but you may find it interesting. It was targetted at an 040/25 so
  300. will run slow on anything less.
  301.  
  302. (42k) LandTest1.lha : (50k) LandTest2.lha : (98k) LandTest3.lha : (86k)
  303. LandTest4.lha : (101k) LandTest5.lha : (279k) LandTest6.lha : (163k)
  304. LandTest7.lha :
  305. LandTest is the beginnings of a game engine, intened to be a cross between
  306. Defender and Revenge of the mutant camels. It starts off in LandTest1.lha as
  307. my first experiments with a parallax ground using Mildred. In LandTest3.lha
  308. things have got much more sophisicated and by LandTest6.lha and LandTest7.lha
  309. most of the main features are in place - for as far I'd got with it. Archive
  310. 6 has a selection of alternative executables, and archive 7 also has an
  311. executable. Note that Mildred is used for all of the graphics rendering and
  312. that the screen comprises a full graphical backdrop (128 shared colours) and
  313. 256-colour objects (using 128 colours probably). The sky was due to
  314. eventually get several parallax layers as well. Control is via the joystick.
  315. In some of the versions, deacceleration is switched off. This was due only to
  316. my standing back for hours on end admiring my handywork in motion! These
  317. files, at least, show a good example using a scroll with a custom offsets
  318. table to produce a parallax ground effect in a single blit. Also some
  319. particle routines are used for animation, and realtime zoomed bobs for the
  320. background map. Note that earlier archives output to AGA only, and none of
  321. these files were intended for an audience. If there is any project that I
  322. might continue with someday it could be this one. LandTest was designed to
  323. run at 25fps on an 040/25 and makes strong use of 040 optimisations.
  324.  
  325. (160k) LandMap.lha : LandMap accompanies the LandTest programs above. It is
  326. used to convert an ordinary strip of `land' graphic into a fake perspective,
  327. ready to be used for the parallax ground image in the LandTest examples. The
  328. operation of the parallax in the LandTest programs is dependent upon the
  329. output from this program. Some degree of palette remapping may also be
  330. involved as, in later versions, sky and land images shared the same 128
  331. colour palette. Note that these programs also were not designed with an
  332. audience in mind.
  333.  
  334. (40k) RotateTest.lha : This is a little experiment I did in rotating a bitmap
  335. realtime. There are two versions, the latter being slightly faster due to
  336. using Mildred's particle drawing routines instead of individual plots. You
  337. can use the mouse buttons to zoom in and out because it zooms at the same
  338. time as rotating. This was really my first exploration into rotation and I
  339. would've liked to have offered various blits with rotation incorporated, but
  340. on trying experimenting with the idea in assembler I found there was a major
  341. shortage of registers spare and therefore any implementation would be less
  342. than optimum speed, especially in different blit modes (and it would require
  343. the infamouse DIVU command which is very slow). This routine outputs to AGA
  344. only and the source is not designed for an audience.
  345.  
  346. (34k) PixelExplosion4.lha : This is a revision of the previous Pixel
  347. Explosion examples, simply to test using the particle routines in `add' mode.
  348. The resulting effect is that the explosion starts off `bright' when the
  349. particles are condensed and `cools' as they disperse.
  350.  
  351. (121k) SnowDemo.lha : This is a demo of how you might do a snow effect using
  352. particles in Mildred. The particles simply have random positions, a base
  353. movement direction is added to them, and then a random variation direction is
  354. added to them. When they go off the end of the buffer they're wrapped back to
  355. the top. Note that this example wasn't designed for an audience, but enjoy.
  356.  
  357. (114k) RainDemo.lha : This is similar to the SnowDemo above, except that in
  358. this example the particles are clumped together and moved together in unisons
  359. of 4 to create the impression of a streak of rain rather than individual
  360. pixels. Also the movement variance is adjusted to give a less snow-blowy
  361. effect. Note that this example wasn't designed for an audience either, but
  362. enjoy.
  363.  
  364.  
  365.  The team of Pagan Games were using Mildred in Dafel:Bloodline. This project
  366.                    was the womb from which Mildred sprang.
  367.  
  368.  
  369. Mildred is also being used in Operation:CounterStrike from BlueBlack Solution
  370.                              by Daniel Allsopp.
  371.  
  372.  
  373.    Rui "Grim" Calvalho of Dark Dreams Designs is using Mildred in his new
  374.                                 Bubbles game.
  375.  
  376.  
  377.                Paul Burkey is using MiniMildred in Foundation.
  378.  
  379.  
  380.                                   Visitors:
  381.  
  382.                         A Member of the Blitz WebRing
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.